import React, { Component } from 'react'
import {Link,Route} from 'react-router-dom';

import Detail from "./Detail";

export default class Message extends Component {

  state = {
    msgArr:[
      {id:'01',title:'消息1'},
      {id:'02',title:'消息2'},
      {id:'03',title:'消息3'},
    ]
  }

  pushShow = (id,title)=>{
    // push跳转+携带params参数
    // this.props.history.push(`/home/message/detail/${id}/${title}`) 

    // push跳转+携带query参数
    // this.props.history.push(`/home/message/detail?id=${id}&title=${title}`)

    // push跳转+携带state参数
    this.props.history.push(`/home/message/detail`,{id,title})
  }

  replaceShow = (id,title)=>{
    // replace跳转+携带params参数
    // this.props.history.replace(`/home/message/detail/${id}/${title}`) 

    // replace跳转+携带query参数
    // this.props.history.replace(`/home/message/detail?id=${id}&title=${title}`)

    // replace跳转+携带state参数
    this.props.history.replace(`/home/message/detail`,{id,title})
  }

  back = ()=>{
    this.props.history.goBack()
  }
  forward = ()=>{
    this.props.history.goForward()
  }
  go = ()=>{
    // 传递数字参数,正数n表示前进n步,负数n表示后退n步,
    this.props.history.go(-2)
  }
  render() {
    const {msgArr} = this.state
    return (
      <div>
        <ul>
          {
            msgArr.map((msgObj)=>{
              return (
                <li key={msgObj.id}>
                  {/* 向路由组件传递params参数 */}
                  {/* <Link to={`/home/message/detail/${msgObj.id}/${msgObj.title}`}>{msgObj.title}</Link> */}
          
                  {/* 向路由组件传递search参数(query参数)*/}
                  {/* <Link to={`/home/message/detail/?id=${msgObj.id}&title=${msgObj.title}`}>{msgObj.title}</Link> */}

                  {/* 向路由组件传递state参数 */}
                  <Link to={{pathname:'/home/message/detail',state:{id:msgObj.id,title:msgObj.title}}}>{msgObj.title}</Link>

                  <button onClick={()=>{this.pushShow(msgObj.id,msgObj.title)}}>push查看</button>
                  <button onClick={()=>{this.replaceShow(msgObj.id,msgObj.title)}}>replace查看</button>
                </li>
              )
            })
          }
        </ul>
        {/* 声明接收params参数(需要参数占位符) */}
        {/* <Route path="/home/message/detail/:id/:title" component={Detail}></Route> */}

        {/* search参数无需声明接收 */}
        {/* <Route path="/home/message/detail/" component={Detail}></Route> */}

        {/* 声明接收state参数 */}
        <Route path="/home/message/detail/" component={Detail}></Route>
        <button onClick={this.back}>回退</button>
        <button onClick={this.forward}>前进</button>
        <button onClick={this.go}>go</button>
      </div>
    )
  }
}
